package dao

import (
	"fmt"
	"go.uber.org/zap"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"prj-layout/pkg/config"
	"prj-layout/pkg/zaplogger"
)

var DB *gorm.DB

//
// generateConnectionUrl 根据配置文件中的参数, 拼接数据库连接字符串
// @return string 拼接之后的数据库连接字符串
//
func generateConnectionUrl() string {
	cfg := config.Get().MySqlConfig
	return fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local",
		cfg.Username, cfg.Password, cfg.Host, cfg.Port, cfg.DatabaseName)
}

//
// New 初始化 MySQL 数据连接
// @return error
//
func New() error {
	url := generateConnectionUrl()
	fmt.Println("拼接的 Sql 连接字符串为:", url)
	var err error
	DB, err = gorm.Open(mysql.Open(url), &gorm.Config{
		Logger: zaplogger.NewGormLogger(zap.L()), // 使用自定义的 logger
	})

	if err != nil {
		return err
	}
	return nil
}
